package com.xuexiang.xui_lib.component.imageview;

import ohos.agp.components.Image;
import ohos.app.Context;

import com.xuexiang.xui_lib.component.imageview.imageload.DefaultImageLoadImpl;
import com.xuexiang.xui_lib.component.imageview.imageload.ImageLoad;

/**
 * 图片加载包装类, 可通过替换imageLoaderImpl以改为其他加载库
 *
 * @since 2021-03-27
 */
public class ImageLoader {
    private final ImageLoad imageLoaderImpl = new DefaultImageLoadImpl();

    private ImageLoader() {
    }

    /**
     * 返回ImageLoader实例
     *
     * @return ImageLoader单例对象
     */
    public static ImageLoader get() {
        return InnerClass.INSTANCE;
    }

    /**
     * 异步加载图片
     *
     * @param image Image控件
     * @param uri path/url/resId
     * @param listener 加载状态监听
     */
    public void loadImage(Image image, Object uri, ImageLoad.LoadListener listener) {
        imageLoaderImpl.loadImage(image, uri, listener);
    }


    /**
     * 加载网络图片
     *
     * @param context
     * @param path
     * @param radiusImage
     * @return Image
     */
    public Image loadImage(Context context, String path,boolean radiusImage){
        return imageLoaderImpl.createImageView(context,path,radiusImage);
    }


    /**
     * 异步加载图片
     *
     * @param image Image控件
     * @param uri path/url/resId
     */
    public void loadImage(Image image, Object uri) {
        loadImage(image, uri, null);
    }

    private static class InnerClass {
        private static final ImageLoader INSTANCE = new ImageLoader();
    }
}
